load("@rules_cc//cc:defs.bzl", "cc_library")

package(default_visibility = ["//visibility:public"])

cc_library(
    name = "boost.intrusive",
    hdrs = glob(
        [
            "include/**/*.hpp",
        ],
        exclude = [
            "include/boost/intrusive/detail/**/*.hpp",
            "include/boost/intrusive/hashtable.hpp",
            "include/boost/intrusive/list.hpp",
            "include/boost/intrusive/parent_from_member.hpp",
            "include/boost/intrusive/pointer_plus_bits.hpp",
            "include/boost/intrusive/set.hpp",
            "include/boost/intrusive/slist.hpp",
            "include/boost/intrusive/treap.hpp",
            "include/boost/intrusive/*_algorithms.hpp",
            "include/boost/intrusive/*_hook.hpp",
            "include/boost/intrusive/*_set.hpp",
            "include/boost/intrusive/*_traits.hpp",
            "include/boost/intrusive/*tree.hpp",
        ],
    ),
    features = [
        "parse_headers",
    ],
    includes = ["include"],
    textual_hdrs = glob([
        "include/boost/intrusive/detail/**/*.hpp",
        "include/boost/intrusive/hashtable.hpp",
        "include/boost/intrusive/list.hpp",
        "include/boost/intrusive/parent_from_member.hpp",
        "include/boost/intrusive/pointer_plus_bits.hpp",
        "include/boost/intrusive/set.hpp",
        "include/boost/intrusive/slist.hpp",
        "include/boost/intrusive/treap.hpp",
        "include/boost/intrusive/*_algorithms.hpp",
        "include/boost/intrusive/*_hook.hpp",
        "include/boost/intrusive/*_set.hpp",
        "include/boost/intrusive/*_traits.hpp",
        "include/boost/intrusive/*tree.hpp",
    ]),
    deps = [
        "@boost.assert",
        "@boost.config",
        "@boost.container_hash",
        "@boost.move",
        "@boost.static_assert",
    ],
)
